﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QLLUONG.DTO;
using QLLUONG.BLL;
namespace QLLUONG
{
    public partial class FormNV : Form
    {
        public FormNV()
        {
            InitializeComponent();
        }
        NhanVienBLL NVBLL = new NhanVienBLL();
        ChucVuBLL CVBLL = new ChucVuBLL();
        LuongBLL LBLL = new LuongBLL();
        private void FormNV_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'qLLUONGDataSet.NHANVIEN' table. You can move, or remove it, as needed.
            
            DataGridNhanVien.DataSource = NVBLL.Show();
            FillCBBNghach();
            ShowInsert(false);
            
        }
        public void FillCBBNghach()
        {
            cbbNghachNV.DisplayMember = "TENCV";

            cbbNghachNV.ValueMember = "MSCV";
            cbbNghachNV.DataSource = CVBLL.Show();            
        }
        public bool CheckNull()
        {
            if (txtMaNV.Text == "")
            {
                MessageBox.Show("Không để trống Mã Nhân Viên");
                return false;
            }
            else if (txtHoNV.Text == "")
            {
                MessageBox.Show("VUi lòng Nhập đầy đủ họ tên");
                return false;
            }
            else if (txtTenNV.Text == "")
            {
                MessageBox.Show("Vui lòng Nhập đầy đủ họ tên");
                return false;
            }
            else if (txtSYLL.Text == "")
            {
                MessageBox.Show("Vui lòng bổ sung sơ yếu lý lịch");
                return false;
            }
            else 
                return true;
        }
        public void ResetForm()
        {
            txtMaNV.ResetText();
            txtSYLL.ResetText();
            txtTenNV.ResetText();
            txtHoNV.ResetText();
            
        }
        private void InsertNVbtn_Click(object sender, EventArgs e)
        {
            String mscv = this.cbbNghachNV.SelectedValue.ToString();
            double HSL = CVBLL.HSL(mscv);
            String Nghach = CVBLL.TENCV(mscv);
            int Bac = Int32.Parse(cbbBacNV.SelectedItem.ToString());
            bool check = CheckNull();
            String MSNV = txtMaNV.Text;
            if (check == true)
            {
                if (NVBLL.CheckNhanVien(MSNV) == true)
                {
                    MessageBox.Show("Nhân Viên Đã Tồn Tại");
                }
                else
                {
                    NhanVien NV = new NhanVien(txtMaNV.Text, txtHoNV.Text, txtTenNV.Text, txtSYLL.Text, 2, Nghach, Bac);

                    bool KQ = NVBLL.Insert(NV);
                    if (KQ == true)
                    {
                        ResetForm();
                        MessageBox.Show("Thêm Thành Công");
                        ShowInsert(false);
                        DataGridNhanVien.DataSource = NVBLL.Show();
                    }
                    else
                    {
                        MessageBox.Show("Thêm Thất Bại , Yêu Cầu Nhập Liệu lại");
                    }
                }
                
            }
        }

        private void DataGridNhanVien_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            txtMaNV.Text = DataGridNhanVien.CurrentRow.Cells[0].Value.ToString();
            txtHoNV.Text = DataGridNhanVien.CurrentRow.Cells[1].Value.ToString();
            txtTenNV.Text = DataGridNhanVien.CurrentRow.Cells[2].Value.ToString();
            txtSYLL.Text = DataGridNhanVien.CurrentRow.Cells[3].Value.ToString();
            cbbNghachNV.Text = DataGridNhanVien.CurrentRow.Cells[5].Value.ToString();
            cbbBacNV.Text = DataGridNhanVien.CurrentRow.Cells[6].Value.ToString();
        }
        public void ShowInsert(bool kq)
        {
            txtHoNV.Enabled = kq;
            txtMaNV.Enabled = kq;
            txtSYLL.Enabled = kq;
            txtTenNV.Enabled = kq;
            cbbBacNV.Enabled = kq;
            cbbNghachNV.Enabled = kq;
        }
        private void UpdateNVbtn_Click(object sender, EventArgs e)
        {
            String mscv = this.cbbNghachNV.SelectedValue.ToString();
            double HSL = CVBLL.HSL(mscv);
            String Nghach = CVBLL.TENCV(mscv);
            int Bac = Int32.Parse(cbbBacNV.SelectedItem.ToString());
            bool check = CheckNull();
            String MSNV = txtMaNV.Text;
            if (check == true)
            {
                NhanVien NV = new NhanVien(txtMaNV.Text, txtHoNV.Text, txtTenNV.Text, txtSYLL.Text, HSL, Nghach, Bac);
                bool KQ = NVBLL.Update(NV);
                if (KQ == true)
                {
                    ResetForm();
                    bool CheckLuong = LBLL.KiemTraLuong(MSNV);
                    if (CheckLuong == true)
                    {
                        double TongLuong = 2800000 * HSL;
                        double HSPC = CVBLL.PhuCap(mscv);
                        double NewPhuCap = Math.Round(HSPC * 380000, 0);
                        double NewLuong = Math.Round(TongLuong + NewPhuCap, 0);
                        double BaoHiem = LBLL.BaoHiem(MSNV);
                        double ThuNhapKhac = LBLL.ThuNhapKhac(MSNV);
                        int NgayCong = LBLL.NgayCong(MSNV);
                        

                        Luong luong = new Luong(MSNV, Nghach, NewPhuCap, BaoHiem, NewLuong, NgayCong, ThuNhapKhac);
                        bool Delete = LBLL.Delete(MSNV);
                        bool KQLuong = LBLL.Insert(luong);
                    }
                    MessageBox.Show("Update Thành Công");
                    ShowInsert(false);
                    DataGridNhanVien.DataSource = NVBLL.Show();
                }
                else
                {
                    MessageBox.Show("Update Thất Bại Yêu Cầu Kiểm Tra Lại");
                }
            }
        }

        private void DeleteNVbtn_Click(object sender, EventArgs e)
        {

            String MSNV = txtMaNV.Text;
            if (MSNV != "")
            {
                bool CheckLuong = LBLL.KiemTraLuong(MSNV);
                if (CheckLuong == true)
                {
                    LBLL.Delete(MSNV);
                    MessageBox.Show("Đã Xóa Bản Lương Của Nhân Viên Này");
                }
                bool KQ = NVBLL.Delete(MSNV);
                if (KQ == true)
                {
                    ResetForm();
                    MessageBox.Show("Xóa Thành Công");                                       
                    DataGridNhanVien.DataSource = NVBLL.Show();
                }
                else
                {
                    MessageBox.Show("Xóa Thất Bại Yêu Cầu Kiểm Tra Lại"+MSNV);
                }
            }
            else
            {
                MessageBox.Show("kiểm tra lại Mã Số NV");
            }
        }

        //private void SearchNVbtn_Click(object sender, EventArgs e)
        //{
        //    String MSNV = txtMaNV.Text;
        //    DataGridNhanVien.DataSource = NVBLL.Search(MSNV);
        //}

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void Reload_Click(object sender, EventArgs e)
        {
            
          
            DataGridNhanVien.DataSource = NVBLL.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ShowInsert(true);
        }

    }
}
